package com.ingenio.siot.servlet;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONException;
import org.json.JSONObject;

import com.ingenio.siot.Helper;
import com.ingenio.siot.Imager;
import com.ingenio.siot.adapter.ParametroAdapter;
import com.ingenio.siot.adapter.TipoMovilAdapter;
import com.ingenio.siot.entity.Parametro;
import com.ingenio.siot.entity.TipoMovil;

/**
 * Servlet implementation class ABMTipoMovilServlet
 */
@WebServlet("/ABMTipoMovil")
public class ABMTipoMovilServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ABMTipoMovilServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		TipoMovilAdapter tma = new TipoMovilAdapter();
		TipoMovil tm = null;
		JSONObject jo = new JSONObject();
		if("eliminar".equals(request.getParameter("type"))){
			try {
				jo.put("action", "eliminar");
				Integer id = Integer.parseInt(request.getParameter("id"));
		    	tma.eliminarTipoMovil(id);
		    	jo.put("id", id);
		    	jo.put("error", false);
			} catch (Exception e) {
				try {
					jo.put("error", true);
				} catch (JSONException e1) {
					e1.printStackTrace();
				}
				e.printStackTrace();
			}
		}else if("editar".equals(request.getParameter("type"))){
			if(true){
				Integer id = Integer.parseInt(request.getParameter("id"));
				try {
					jo.put("action", "editar");
					tm = tma.devolverTipoMovil(id);
					String descripcion = request.getParameter("descripcion");
					Float densidad = tm.getDensidadPromedio();
					if(Helper.isFloat(request.getParameter("densidad"))){
					  densidad = Float.parseFloat(request.getParameter("densidad"));
					}
					tm.setDescTipoMovil(descripcion);
					tm.setDensidadPromedio(densidad);
					
					tma.editarTipoMovil(tm);
					jo.put("id", tm.getIdTipoMovil());
					jo.put("descripcion", tm.getDescTipoMovil());
					jo.put("densidad", tm.getDensidadPromedio());
					jo.put("error", false);
				} catch (Exception e1) {
					try {
						jo.put("error", true);
					} catch (JSONException e) {
						e.printStackTrace();
					}
					e1.printStackTrace();
				}
			}
		}else if("nuevo".equals(request.getParameter("type"))){
			if(true){
				String descripcion = request.getParameter("descripcion");
				Float densidad = 0.0f;
				String urlImg = null;
				if(Helper.isFloat(request.getParameter("densidad"))){
				  densidad = Float.parseFloat(request.getParameter("densidad"));
				}
				if(request.getParameter("img") != ""){
					String[] parts = request.getParameter("img").split(",");
					BufferedImage newImg;
					newImg = Imager.decodeToImage(parts[1]);
					ParametroAdapter pa = new ParametroAdapter();
					Parametro p = null;
					String servidor = null;
					String directorio = null;
					try {
						p = pa.devolverParametro("RUTA_SERVIDOR");
						servidor = p.getValor();
						p = pa.devolverParametro("RUTAIMG_TIPOMOVILES");
						directorio = p.getValor();
					}
					catch(Exception e){
						e.printStackTrace();
					}
					urlImg = descripcion.concat(".png"); // nombre de imagen que se guarda en base de datos
					ImageIO.write(newImg, "png", new File(servidor.concat(directorio.concat(urlImg)))); // donde se subira el archivo rutaservidor + rutatipomovil + urlimagen
				}else{
					System.out.println("asdasd");
					urlImg = "cono.gif";
				}
				tm = new TipoMovil(null, descripcion, urlImg, densidad, true);
				try {
				   jo.put("action", "nuevo");
				   tm = tma.crearTipoMovil(tm);
				   jo.put("id", tm.getIdTipoMovil());
				   jo.put("descripcion", tm.getDescTipoMovil());
				   jo.put("densidad", tm.getDensidadPromedio());
				   jo.put("error", false);
				} catch (Exception e) {
					try {
						jo.put("error", true);
					} catch (JSONException e1) {
						e1.printStackTrace();
					}
					e.printStackTrace();
				}
			}
		}
		response.setContentType("application/json");
		response.getWriter().write(jo.toString());
	}

}
